
	package net.ericaro.neojavagengen;
	public class JavaGrammar  {
	public static Grammar parse(Grammar g){
	
g.createPackage("Types");
g.createInterface("Identifier") ;
g.createInterface("Literal") .withComponent("IntegerLiteral") .withComponent("FloatingPointLiteral") .withComponent("CharacterLiteral") .withComponent("StringLiteral") .withComponent("BooleanLiteral") .withComponent("NullLiteral") ;
g.createInterface("IntegerLiteral") ;
g.createInterface("FloatingPointLiteral") ;
g.createInterface("CharacterLiteral") ;
g.createInterface("StringLiteral") ;
g.createInterface("BooleanLiteral") ;
g.createInterface("NullLiteral") ;
g.createInterface("Type") .withComponent("PrimitiveType") .withComponent("ReferenceType") ;
g.createEnum("PrimitiveType") .withLiteral("byte") .withLiteral("short") .withLiteral("int") .withLiteral("long") .withLiteral("char") .withLiteral("float") .withLiteral("double") .withLiteral("boolean") ;
g.createInterface("ReferenceType") .withComponent("ClassOrInterfaceType") .withComponent("ArrayType") ;
g.createComposition("TypedIdentifier") .withComponent("Identifier", false) .withComponent("TypeArguments", true) ;
g.createList("ClassOrInterfaceType", ".","","","TypedIdentifier" );
g.createInterface("InterfaceType") .withComponent("ClassOrInterfaceType") ;
g.createInterface("ClassType") .withComponent("ClassOrInterfaceType") ;
g.createComposition("ArrayType") .withComponent("Type", false) .withLiteral("[", false) .withLiteral("]", false) ;
g.createComposition("TypeParameter") .withComponent("TypeVariable", false) .withComponent("TypeBound", true) ;
g.createInterface("TypeVariable") .withComponent("Identifier") ;
g.createComposition("TypeBound") .withLiteral("extends", false) .withComponent("ClassOrInterfaceType", false) .withComponent("AdditionalBounds", true) ;
g.createList("AdditionalBounds", "&","&","","InterfaceType" );
g.createList("TypeArguments", ",","<",">","ActualTypeArgument" );
g.createInterface("ActualTypeArgument") .withComponent("ReferenceType") .withComponent("Wildcard") ;
g.createComposition("Wildcard") .withLiteral("?", false) .withComponent("WildcardBounds", true) ;
g.createInterface("WildcardBounds") .withComponent("ExtendsReferenceType") .withComponent("SuperReferenceType") ;
g.createComposition("ExtendsReferenceType") .withLiteral("extends", false) .withComponent("ReferenceType", false) ;
g.createComposition("SuperReferenceType") .withLiteral("super", false) .withComponent("ReferenceType", false) ;
g.createPackage("Names");
g.createList("QualifiedIdentifier", ".","","","Identifier" );
g.createInterface("PackageName") .withComponent("QualifiedIdentifier") ;
g.createInterface("TypeName") .withComponent("QualifiedIdentifier") ;
g.createInterface("ExpressionName") .withComponent("QualifiedIdentifier") ;
g.createInterface("MethodName") .withComponent("QualifiedIdentifier") ;
g.createInterface("PackageOrTypeName") .withComponent("QualifiedIdentifier") ;
g.createInterface("AmbiguousName") .withComponent("QualifiedIdentifier") ;
g.createPackage("Packages");
g.createComposition("CompilationUnit") .withComponent("PackageDeclaration", true) .withComponent("ImportDeclarations", true) .withComponent("TypeDeclarations", true) ;
g.createList("ImportDeclarations", " ","","","ImportDeclaration" );
g.createList("TypeDeclarations", " ","","","TypeDeclaration" );
g.createComposition("PackageDeclaration") .withComponent("Annotations", true) .withLiteral("package", false) .withComponent("PackageName", false) .withLiteral(";", false) ;
g.createInterface("ImportDeclaration") .withComponent("ImportStaticDeclaration") .withComponent("ImportAllStaticDeclaration") .withComponent("ImportTypeDeclaration") .withComponent("ImportAllTypeDeclaration") ;
g.createComposition("ImportTypeDeclaration") .withLiteral("import", false) .withComponent("PackageOrTypeName", false) .withLiteral(";", false) ;
g.createComposition("ImportAllTypeDeclaration") .withLiteral("import", false) .withComponent("PackageOrTypeName", false) .withLiteral(".", false) .withLiteral("*", false) .withLiteral(";", false) ;
g.createComposition("ImportStaticDeclaration") .withLiteral("import", false) .withLiteral("static", false) .withComponent("TypeName", false) .withLiteral(".", false) .withComponent("Identifier", false) .withLiteral(";", false) ;
g.createComposition("ImportAllStaticDeclaration") .withLiteral("import", false) .withLiteral("static", false) .withComponent("TypeName", false) .withLiteral(".", false) .withLiteral("*", false) .withLiteral(";", false) ;
g.createInterface("TypeDeclaration") .withComponent("ClassDeclaration") .withComponent("InterfaceDeclaration") ;
g.createComposition("JavadocComment") .withLiteral("/**", false) .withComponent("JavadocLiteral", false) .withLiteral("*/", false) ;
g.createInterface("JavadocLiteral") ;
g.createPackage("Classes");
g.createInterface("ClassDeclaration") .withComponent("NormalClassDeclaration") .withComponent("EnumDeclaration") ;
g.createComposition("NormalClassDeclaration") .withComponent("JavadocComment", true) .withComponent("ClassModifiers", true) .withLiteral("class", false) .withComponent("Identifier", false) .withComponent("TypeParameters", true) .withComponent("Super", true) .withComponent("Interfaces", true) .withComponent("ClassBody", false) ;
g.createComposition("ClassModifiers") .withComponent("Annotations", true) .withComponent("ClassModifier", false) .withComponent("ClassModifiers", true) ;
g.createEnum("ClassModifier") .withLiteral("public") .withLiteral("protected") .withLiteral("private") .withLiteral("abstract") .withLiteral("static") .withLiteral("final") .withLiteral("strictfp") ;
g.createList("TypeParameters", ",","<",">","TypeParameter" );
g.createComposition("Super") .withLiteral("extends", false) .withComponent("ClassType", false) ;
g.createComposition("Interfaces") .withLiteral("implements", false) .withComponent("InterfaceTypes", false) ;
g.createList("InterfaceTypes", ",","","","InterfaceType" );
g.createComposition("ClassBody") .withLiteral("{", false) .withComponent("ClassBodyDeclarations", true) .withLiteral("}", false) ;
g.createList("ClassBodyDeclarations", " ","","","ClassBodyDeclaration" );
g.createInterface("ClassBodyDeclaration") .withComponent("FieldDeclaration") .withComponent("MethodDeclaration") .withComponent("ClassDeclaration") .withComponent("InterfaceDeclaration") .withComponent("InstanceInitializer") .withComponent("StaticInitializer") .withComponent("ConstructorDeclaration") ;
g.createComposition("FieldDeclaration") .withComponent("JavadocComment", true) .withComponent("Annotations", true) .withComponent("FieldModifiers", true) .withComponent("Type", false) .withComponent("VariableDeclarators", false) .withLiteral(";", false) ;
g.createList("VariableDeclarators", ",","","","VariableDeclarator" );
g.createInterface("VariableDeclarator") .withComponent("SimpleVariableDeclaratorId") .withComponent("InitializedVariableDeclaratorId") ;
g.createComposition("SimpleVariableDeclaratorId") .withComponent("VariableDeclaratorId", false) ;
g.createComposition("InitializedVariableDeclaratorId") .withComponent("VariableDeclaratorId", false) .withLiteral("=", false) .withComponent("VariableInitializer", false) ;
g.createComposition("VariableDeclaratorId") .withComponent("Identifier", false) .withComponent("Dims", true) ;
g.createComposition("Dims") .withLiteral("[", false) .withLiteral("]", false) .withComponent("Dims", true) ;
g.createInterface("VariableInitializer") .withComponent("Expression") .withComponent("ArrayInitializer") ;
g.createList("FieldModifiers", " ","","","FieldModifier" );
g.createEnum("FieldModifier") .withLiteral("public") .withLiteral("protected") .withLiteral("private") .withLiteral("static") .withLiteral("final") .withLiteral("transient") .withLiteral("volatile") ;
g.createComposition("MethodDeclaration") .withComponent("MethodHeader", false) .withComponent("MethodBody", false) ;
g.createComposition("MethodHeader") .withComponent("JavadocComment", true) .withComponent("Annotations", true) .withComponent("MethodModifiers", true) .withComponent("TypeParameters", true) .withComponent("TypedMethodDeclarator", false) .withComponent("Throws", true) ;
g.createInterface("TypedMethodDeclarator") .withComponent("ReturnMethodDeclarator") .withComponent("VoidMethodDeclarator") ;
g.createComposition("ReturnMethodDeclarator") .withComponent("Type", false) .withComponent("MethodDeclarator", false) .withComponent("Dims", true) ;
g.createComposition("VoidMethodDeclarator") .withLiteral("void", false) .withComponent("MethodDeclarator", false) ;
g.createComposition("MethodDeclarator") .withComponent("Identifier", false) .withLiteral("(", false) .withComponent("FormalParameters", true) .withLiteral(")", false) ;
g.createList("FormalParameters", ",","","","FormalParameter" );
g.createComposition("FormalParameter") .withComponent("VariableModifiers", true) .withComponent("Type", false) .withLiteral("...", true) .withComponent("VariableDeclaratorId", false) ;
g.createComposition("VariableModifiers") .withComponent("Annotations", true) .withLiteral("final", false) ;
g.createList("MethodModifiers", " ","","","MethodModifier" );
g.createEnum("MethodModifier") .withLiteral("public") .withLiteral("protected") .withLiteral("private") .withLiteral("abstract") .withLiteral("static") .withLiteral("final") .withLiteral("synchronized") .withLiteral("native") .withLiteral("strictfp") ;
g.createComposition("Throws") .withLiteral("throws", false) .withComponent("ExceptionTypes", false) ;
g.createList("ExceptionTypes", ",","","","ExceptionType" );
g.createInterface("ExceptionType") .withComponent("ClassType") .withComponent("TypeVariable") ;
g.createInterface("MethodBody") .withComponent("Block") ;
g.createInterface("InstanceInitializer") .withComponent("Block") ;
g.createComposition("StaticInitializer") .withLiteral("static", false) .withComponent("Block", false) ;
g.createComposition("ConstructorDeclaration") .withComponent("JavadocComment", true) .withComponent("Annotations", true) .withComponent("ConstructorModifiers", true) .withComponent("ConstructorDeclarator", false) .withComponent("Throws", true) .withComponent("ConstructorBody", false) ;
g.createComposition("ConstructorDeclarator") .withComponent("TypeParameters", true) .withComponent("SimpleTypeName", false) .withLiteral("(", false) .withComponent("FormalParameters", true) .withLiteral(")", false) ;
g.createInterface("SimpleTypeName") .withComponent("Identifier") ;
g.createList("ConstructorModifiers", " ","","","ConstructorModifier" );
g.createEnum("ConstructorModifier") .withLiteral("public") .withLiteral("protected") .withLiteral("private") ;
g.createComposition("ConstructorBody") .withLiteral("{", false) .withComponent("ExplicitConstructorInvocation", true) .withComponent("BlockStatements", true) .withLiteral("}", false) ;
g.createInterface("ExplicitConstructorInvocation") .withComponent("ThisExplicitConstructorInvocation") .withComponent("SuperExplicitConstructorInvocation") ;
g.createComposition("ThisExplicitConstructorInvocation") .withComponent("NonWildTypeArguments", true) .withLiteral("this", false) .withLiteral("(", false) .withComponent("Arguments", true) .withLiteral(")", false) .withLiteral(";", false) ;
g.createComposition("SuperExplicitConstructorInvocation") .withComponent("NonWildTypeArguments", true) .withLiteral("super", false) .withLiteral("(", false) .withComponent("Arguments", true) .withLiteral(")", false) .withLiteral(";", false) ;
g.createList("NonWildTypeArguments", ",","<",">","ReferenceType" );
g.createComposition("EnumDeclaration") .withComponent("JavadocComment", true) .withComponent("ClassModifiers", true) .withLiteral("enum", false) .withComponent("Identifier", false) .withComponent("Interfaces", true) .withComponent("EnumBody", false) ;
g.createComposition("EnumBody") .withLiteral("{", false) .withComponent("EnumConstants", true) .withLiteral(",", true) .withComponent("EnumBodyDeclarations", true) .withLiteral("}", false) ;
g.createList("EnumConstants", ",","","","EnumConstant" );
g.createComposition("EnumConstant") .withComponent("Annotations", true) .withComponent("Identifier", false) .withLiteral("(", false) .withComponent("Arguments", true) .withLiteral(")", false) .withComponent("ClassBody", true) ;
g.createComposition("EnumBodyDeclarations") .withLiteral(";", false) .withComponent("ClassBodyDeclarations", true) ;
g.createPackage("Interfaces");
g.createInterface("InterfaceDeclaration") .withComponent("NormalInterfaceDeclaration") .withComponent("AnnotationTypeDeclaration") ;
g.createComposition("NormalInterfaceDeclaration") .withComponent("JavadocComment", true) .withComponent("Annotations", true) .withComponent("InterfaceModifiers", true) .withLiteral("interface", false) .withComponent("Identifier", false) .withComponent("TypeParameters", true) .withComponent("ExtendsInterfaces", true) .withComponent("InterfaceBody", false) ;
g.createList("InterfaceModifiers", " ","","","InterfaceModifier" );
g.createEnum("InterfaceModifier") .withLiteral("public") .withLiteral("protected") .withLiteral("private") .withLiteral("abstract") .withLiteral("static") .withLiteral("strictfp") ;
g.createComposition("ExtendsInterfaces") .withLiteral("extends", false) .withComponent("InterfaceTypes", false) ;
g.createComposition("InterfaceBody") .withLiteral("{", false) .withComponent("InterfaceMemberDeclarations", true) .withLiteral("}", false) ;
g.createList("InterfaceMemberDeclarations", " ","","","InterfaceMemberDeclaration" );
g.createInterface("InterfaceMemberDeclaration") .withComponent("ConstantDeclaration") .withComponent("AbstractMethodDeclaration") .withComponent("ClassDeclaration") .withComponent("InterfaceDeclaration") ;
g.createComposition("ConstantDeclaration") .withComponent("JavadocComment", true) .withComponent("Annotations", true) .withComponent("ConstantModifiers", true) .withComponent("Type", false) .withComponent("VariableDeclarators", false) .withLiteral(";", false) ;
g.createList("ConstantModifiers", " ","","","ConstantModifier" );
g.createEnum("ConstantModifier") .withLiteral("public") .withLiteral("static") .withLiteral("final") ;
g.createComposition("AbstractMethodDeclaration") .withComponent("JavadocComment", true) .withComponent("Annotations", true) .withComponent("AbstractMethodModifiers", true) .withComponent("TypeParameters", true) .withComponent("TypedMethodDeclarator", false) .withComponent("Throws", true) .withLiteral(";", false) ;
g.createList("AbstractMethodModifiers", " ","","","AbstractMethodModifier" );
g.createEnum("AbstractMethodModifier") .withLiteral("public") .withLiteral("abstract") ;
g.createComposition("AnnotationTypeDeclaration") .withComponent("JavadocComment", true) .withComponent("Annotations", true) .withComponent("InterfaceModifiers", true) .withLiteral("@", false) .withLiteral("interface", false) .withComponent("Identifier", false) .withComponent("AnnotationTypeBody", false) ;
g.createComposition("AnnotationTypeBody") .withLiteral("{", false) .withComponent("AnnotationTypeElementDeclarations", true) .withLiteral("}", false) ;
g.createList("AnnotationTypeElementDeclarations", " ","","","AnnotationTypeElementDeclaration" );
g.createInterface("AnnotationTypeElementDeclaration") .withComponent("NormalAnnotationDeclaration") .withComponent("ConstantDeclaration") .withComponent("ClassDeclaration") .withComponent("InterfaceDeclaration") .withComponent("EnumDeclaration") .withComponent("AnnotationTypeDeclaration") ;
g.createComposition("NormalAnnotationDeclaration") .withComponent("JavadocComment", true) .withComponent("Annotations", true) .withComponent("AbstractMethodModifiers", true) .withComponent("Type", false) .withComponent("Identifier", false) .withLiteral("(", false) .withLiteral(")", false) .withComponent("DefaultValue", true) .withLiteral(";", false) ;
g.createComposition("DefaultValue") .withLiteral("default", false) .withComponent("ElementValue", false) ;
g.createList("Annotations", " ","","","Annotation" );
g.createComposition("Annotation") .withLiteral("@", false) .withComponent("TypeName", false) .withComponent("AnnotationValue", true) ;
g.createComposition("AnnotationValue") .withComponent("NormalAnnotationValue", false) .withComponent("SingleElementAnnotationValue", false) ;
g.createComposition("NormalAnnotationValue") .withLiteral("(", false) .withComponent("ElementValuePairs", true) .withLiteral(")", false) ;
g.createList("ElementValuePairs", ",","","","ElementValuePair" );
g.createComposition("ElementValuePair") .withComponent("Identifier", false) .withLiteral("=", false) .withComponent("ElementValue", false) ;
g.createInterface("ElementValue") .withComponent("ConditionalExpression") .withComponent("Annotation") .withComponent("ElementValueArrayInitializer") ;
g.createComposition("ElementValueArrayInitializer") .withLiteral("{", false) .withComponent("ElementValues", true) .withLiteral(",", true) .withLiteral("}", false) ;
g.createList("ElementValues", ",","","","ElementValue" );
g.createComposition("SingleElementAnnotationValue") .withLiteral("(", false) .withComponent("ElementValue", false) .withLiteral(")", false) ;
g.createPackage("Arrays");
g.createComposition("ArrayInitializer") .withLiteral("{", false) .withComponent("VariableInitializers", true) .withLiteral(",", true) .withLiteral("}", false) ;
g.createList("VariableInitializers", ",","","","VariableInitializer" );
g.createPackage("Blocks");
g.createComposition("Block") .withLiteral("{", false) .withComponent("BlockStatements", true) .withLiteral("}", false) ;
g.createList("BlockStatements", " ","","","BlockStatement" );
g.createInterface("BlockStatement") .withComponent("LocalVariableDeclarationStatement") .withComponent("ClassDeclaration") .withComponent("Statement") ;
g.createComposition("LocalVariableDeclarationStatement") .withComponent("LocalVariableDeclaration", false) .withLiteral(";", false) ;
g.createComposition("LocalVariableDeclaration") .withComponent("VariableModifiers", false) .withComponent("Type", false) .withComponent("VariableDeclarators", false) ;
g.createInterface("Statement") .withComponent("StatementWithoutTrailingSubstatement") .withComponent("LabeledStatement") .withComponent("IfThenStatement") .withComponent("IfThenElseStatement") .withComponent("WhileStatement") .withComponent("ForStatement") ;
g.createInterface("StatementWithoutTrailingSubstatement") .withComponent("Block") .withComponent("EmptyStatement") .withComponent("ExpressionStatement") .withComponent("AssertStatement") .withComponent("SwitchStatement") .withComponent("DoStatement") .withComponent("BreakStatement") .withComponent("ContinueStatement") .withComponent("ReturnStatement") .withComponent("SynchronizedStatement") .withComponent("ThrowStatement") .withComponent("TryStatement") ;
g.createInterface("StatementNoShortIf") .withComponent("StatementWithoutTrailingSubstatement") .withComponent("LabeledStatementNoShortIf") .withComponent("IfThenElseStatementNoShortIf") .withComponent("WhileStatementNoShortIf") .withComponent("ForStatementNoShortIf") ;
g.createComposition("IfThenStatement") .withLiteral("if", false) .withLiteral("(", false) .withComponent("Expression", false) .withLiteral(")", false) .withComponent("Statement", false) ;
g.createComposition("IfThenElseStatement") .withLiteral("if", false) .withLiteral("(", false) .withComponent("Expression", false) .withLiteral(")", false) .withComponent("StatementNoShortIf", false) .withLiteral("else", false) .withComponent("Statement", false) ;
g.createComposition("IfThenElseStatementNoShortIf") .withLiteral("if", false) .withLiteral("(", false) .withComponent("Expression", false) .withLiteral(")", false) .withComponent("StatementNoShortIf", false) .withLiteral("else", false) .withComponent("StatementNoShortIf", false) ;
g.createComposition("EmptyStatement") .withLiteral(";", false) ;
g.createComposition("LabeledStatement") .withComponent("Identifier", false) .withLiteral(":", false) .withComponent("Statement", false) ;
g.createComposition("LabeledStatementNoShortIf") .withComponent("Identifier", false) .withLiteral(":", false) .withComponent("StatementNoShortIf", false) ;
g.createComposition("ExpressionStatement") .withComponent("StatementExpression", false) .withLiteral(";", false) ;
g.createInterface("StatementExpression") .withComponent("Assignment") .withComponent("PreIncrementExpression") .withComponent("PreDecrementExpression") .withComponent("PostIncrementExpression") .withComponent("PostDecrementExpression") .withComponent("MethodInvocation") .withComponent("ClassInstanceCreationExpression") ;
g.createComposition("AssertStatement") .withComponent("AssertWithoutMessage", false) .withComponent("AssertWithMessage", false) ;
g.createComposition("AssertWithoutMessage") .withLiteral("assert", false) .withComponent("Expression", false) .withLiteral(";", false) ;
g.createComposition("AssertWithMessage") .withLiteral("assert", false) .withComponent("Expression", false) .withLiteral(":", false) .withComponent("Expression", false) .withLiteral(";", false) ;
g.createComposition("SwitchStatement") .withLiteral("switch", false) .withLiteral("(", false) .withComponent("Expression", false) .withLiteral(")", false) .withComponent("SwitchBlock", false) ;
g.createComposition("SwitchBlock") .withLiteral("{", false) .withComponent("SwitchBlockStatementGroups", true) .withComponent("SwitchLabels", true) .withLiteral("}", false) ;
g.createList("SwitchBlockStatementGroups", " ","","","SwitchBlockStatementGroup" );
g.createComposition("SwitchBlockStatementGroup") .withComponent("SwitchLabels", false) .withComponent("BlockStatements", false) ;
g.createList("SwitchLabels", " ","","","SwitchLabel" );
g.createComposition("SwitchLabel") .withComponent("CaseConstantExpresion", false) .withComponent("CaseEnumConstantName", false) .withComponent("CaseDefault", false) ;
g.createComposition("CaseConstantExpresion") .withLiteral("case", false) .withComponent("ConstantExpression", false) .withLiteral(":", false) ;
g.createComposition("CaseEnumConstantName") .withLiteral("case", false) .withComponent("EnumConstantName", false) .withLiteral(":", false) ;
g.createComposition("CaseDefault") .withLiteral("default", false) .withLiteral(":", false) ;
g.createInterface("EnumConstantName") .withComponent("Identifier") ;
g.createComposition("WhileStatement") .withLiteral("while", false) .withLiteral("(", false) .withComponent("Expression", false) .withLiteral(")", false) .withComponent("Statement", false) ;
g.createComposition("WhileStatementNoShortIf") .withLiteral("while", false) .withLiteral("(", false) .withComponent("Expression", false) .withLiteral(")", false) .withComponent("StatementNoShortIf", false) ;
g.createComposition("DoStatement") .withLiteral("do", false) .withComponent("Statement", false) .withLiteral("while", false) .withLiteral("(", false) .withComponent("Expression", false) .withLiteral(")", false) .withLiteral(";", false) ;
g.createInterface("ForStatement") .withComponent("BasicForStatement") .withComponent("EnhancedForStatement") ;
g.createComposition("BasicForStatement") .withLiteral("for", false) .withLiteral("(", false) .withComponent("ForInit", true) .withLiteral(";", false) .withComponent("Expression", true) .withLiteral(";", false) .withComponent("ForUpdate", true) .withLiteral(")", false) .withComponent("Statement", false) ;
g.createComposition("ForStatementNoShortIf") .withLiteral("for", false) .withLiteral("(", false) .withComponent("ForInit", true) .withLiteral(";", false) .withComponent("Expression", true) .withLiteral(";", false) .withComponent("ForUpdate", true) .withLiteral(")", false) .withComponent("StatementNoShortIf", false) ;
g.createInterface("ForInit") .withComponent("StatementExpressions") .withComponent("LocalVariableDeclaration") ;
g.createInterface("ForUpdate") .withComponent("StatementExpressions") ;
g.createList("StatementExpressions", ",","","","StatementExpression" );
g.createComposition("EnhancedForStatement") .withLiteral("for", false) .withLiteral("(", false) .withComponent("VariableModifiers", true) .withComponent("Type", false) .withComponent("Identifier", false) .withLiteral(":", false) .withComponent("Expression", false) .withLiteral(")", false) .withComponent("Statement", false) ;
g.createComposition("BreakStatement") .withLiteral("break", false) .withComponent("Identifier", true) .withLiteral(";", false) ;
g.createComposition("ContinueStatement") .withLiteral("continue", false) .withComponent("Identifier", true) .withLiteral(";", false) ;
g.createComposition("ReturnStatement") .withLiteral("return", false) .withComponent("Expression", true) .withLiteral(";", false) ;
g.createComposition("ThrowStatement") .withLiteral("throw", false) .withComponent("Expression", false) .withLiteral(";", false) ;
g.createComposition("SynchronizedStatement") .withLiteral("synchronized", false) .withLiteral("(", false) .withComponent("Expression", false) .withLiteral(")", false) .withComponent("Block", false) ;
g.createComposition("TryStatement") .withComponent("TryCatchStatement", false) .withComponent("TryCatchFinallyStatement", false) ;
g.createComposition("TryCatchStatement") .withLiteral("try", false) .withComponent("Block", false) .withComponent("Catches", false) ;
g.createComposition("TryCatchFinallyStatement") .withLiteral("try", false) .withComponent("Block", false) .withComponent("Catches", true) .withLiteral("finally", false) .withComponent("Block", false) ;
g.createList("Catches", " ","","","CatchClause" );
g.createComposition("CatchClause") .withLiteral("catch", false) .withLiteral("(", false) .withComponent("FormalParameter", false) .withLiteral(")", false) .withComponent("Block", false) ;
g.createPackage("Expressions");
g.createInterface("Primary") .withComponent("PrimaryNoNewArray") .withComponent("ArrayCreationExpression") ;
g.createInterface("PrimaryNoNewArray") .withComponent("Literal") .withComponent("TypeDotClass") .withComponent("VoidDotClass") .withComponent("This") .withComponent("TypeDotThis") .withComponent("BracedExpression") .withComponent("ClassInstanceCreationExpression") .withComponent("FieldAccess") .withComponent("MethodInvocation") .withComponent("ArrayAccess") ;
g.createEnum("This") .withLiteral("this") ;
g.createComposition("TypeDotClass") .withComponent("Type", false) .withLiteral(".", false) .withLiteral("class", false) ;
g.createComposition("VoidDotClass") .withLiteral("void", false) .withLiteral(".", false) .withLiteral("class", false) ;
g.createComposition("TypeDotThis") .withComponent("TypeName", false) .withLiteral(".", false) .withLiteral("this", false) ;
g.createComposition("BracedExpression") .withLiteral("(", false) .withComponent("Expression", false) .withLiteral(")", false) ;
g.createInterface("ClassInstanceCreationExpression") .withComponent("NormalClassInstanceCreationExpression") .withComponent("PrimaryClassInstanceCreationExpression") ;
g.createComposition("NormalClassInstanceCreationExpression") .withLiteral("new", false) .withComponent("TypeArguments", true) .withComponent("ClassOrInterfaceType", false) .withLiteral("(", false) .withComponent("Arguments", true) .withLiteral(")", false) .withComponent("ClassBody", true) ;
g.createComposition("PrimaryClassInstanceCreationExpression") .withComponent("Primary", false) .withComponent("NormalClassInstanceCreationExpression", false) ;
g.createList("Arguments", ",","","","Expression" );
g.createComposition("ArrayCreationExpression") .withLiteral("new", false) .withComponent("ArrayCreationExpressionBody", false) ;
g.createInterface("ArrayCreationExpressionBody") .withComponent("PrimitiveArrayCreation") .withComponent("ClassOrInterfaceArrayCreation") ;
g.createComposition("PrimitiveArrayCreation") .withComponent("PrimitiveType", false) .withComponent("DimSpecifier", false) ;
g.createComposition("ClassOrInterfaceArrayCreation") .withComponent("ClassOrInterfaceType", false) .withComponent("DimSpecifier", false) ;
g.createComposition("DimSpecifier") .withComponent("NormalDimSpecifier", false) .withComponent("InitializedDimSpecifier", false) ;
g.createComposition("NormalDimSpecifier") .withComponent("DimExprs", false) .withComponent("Dims", true) ;
g.createComposition("InitializedDimSpecifier") .withComponent("Dims", false) .withComponent("ArrayInitializer", false) ;
g.createList("DimExprs", " ","","","DimExpr" );
g.createComposition("DimExpr") .withLiteral("[", false) .withComponent("Expression", false) .withLiteral("]", false) ;
g.createInterface("FieldAccess") .withComponent("Identifier") .withComponent("PrimaryAccess") .withComponent("SuperAccess") .withComponent("TypeSuperAccess") ;
g.createComposition("PrimaryAccess") .withComponent("Primary", false) .withLiteral(".", false) .withComponent("Identifier", false) ;
g.createComposition("SuperAccess") .withLiteral("super", false) .withLiteral(".", false) .withComponent("Identifier", false) ;
g.createComposition("TypeSuperAccess") .withComponent("TypeName", false) .withLiteral(".", false) .withLiteral("super", false) .withLiteral(".", false) .withComponent("Identifier", false) ;
g.createInterface("MethodInvocation") .withComponent("SimpleMethodInvocation") .withComponent("PrimaryMethodInvocation") .withComponent("SuperMethodInvocation") .withComponent("TypeSuperMethodInvocation") .withComponent("TypeNonWildTypeMethodInvocation") ;
g.createComposition("SimpleMethodInvocation") .withComponent("MethodName", false) .withLiteral("(", false) .withComponent("Arguments", false) .withLiteral(")", false) ;
g.createComposition("PrimaryMethodInvocation") .withComponent("Primary", false) .withLiteral(".", false) .withComponent("MethodInvocationBody", false) ;
g.createComposition("SuperMethodInvocation") .withLiteral("super", false) .withLiteral(".", false) .withComponent("MethodInvocationBody", false) ;
g.createComposition("TypeSuperMethodInvocation") .withComponent("TypeName", false) .withLiteral(".", false) .withLiteral("super", false) .withLiteral(".", false) .withComponent("MethodInvocationBody", false) ;
g.createComposition("TypeNonWildTypeMethodInvocation") .withComponent("TypeName", false) .withLiteral(".", false) .withComponent("NonWildTypeArguments", false) .withComponent("Identifier", false) .withLiteral("(", false) .withComponent("Arguments", false) .withLiteral(")", false) ;
g.createComposition("MethodInvocationBody") .withComponent("NonWildTypeArguments", true) .withComponent("Identifier", false) .withLiteral("(", false) .withComponent("Arguments", false) .withLiteral(")", false) ;
g.createInterface("ArrayAccess") .withComponent("ExpressionArrayAccess") .withComponent("PrimaryArrayAccess") ;
g.createComposition("ExpressionArrayAccess") .withComponent("ExpressionName", false) .withLiteral("[", false) .withComponent("Expression", false) .withLiteral("]", false) ;
g.createComposition("PrimaryArrayAccess") .withComponent("PrimaryNoNewArray", false) .withLiteral("[", false) .withComponent("Expression", false) .withLiteral("]", false) ;
g.createInterface("PostfixExpression") .withComponent("Primary") .withComponent("ExpressionName") .withComponent("PostIncrementExpression") .withComponent("PostDecrementExpression") ;
g.createComposition("PostIncrementExpression") .withComponent("PostfixExpression", false) .withLiteral("++", false) ;
g.createComposition("PostDecrementExpression") .withComponent("PostfixExpression", false) .withLiteral("--", false) ;
g.createInterface("UnaryExpression") .withComponent("PreIncrementExpression") .withComponent("PreDecrementExpression") .withComponent("PlusUnaryExpression") .withComponent("MinusUnaryExpression") .withComponent("PostfixExpression") .withComponent("CastExpression") .withComponent("UnaryExpressionNotPlusMinus") ;
g.createComposition("PlusUnaryExpression") .withLiteral("+", false) .withComponent("UnaryExpression", false) ;
g.createComposition("MinusUnaryExpression") .withLiteral("-", false) .withComponent("UnaryExpression", false) ;
g.createComposition("PreIncrementExpression") .withLiteral("++", false) .withComponent("UnaryExpression", false) ;
g.createComposition("PreDecrementExpression") .withLiteral("--", false) .withComponent("UnaryExpression", false) ;
g.createInterface("UnaryExpressionNotPlusMinus") .withComponent("PostfixExpression") .withComponent("TildeUnaryExpression") .withComponent("BangUnaryExpression") .withComponent("CastExpression") ;
g.createComposition("TildeUnaryExpression") .withLiteral("~", false) .withComponent("UnaryExpression", false) ;
g.createComposition("BangUnaryExpression") .withLiteral("!", false) .withComponent("UnaryExpression", false) ;
g.createComposition("CastExpression") .withComponent("PrimitiveCastExpression", false) .withComponent("ReferenceTypeCastExpression", false) ;
g.createComposition("PrimitiveCastExpression") .withLiteral("(", false) .withComponent("PrimitiveType", false) .withComponent("Dims", true) .withLiteral(")", false) .withComponent("UnaryExpression", false) ;
g.createComposition("ReferenceTypeCastExpression") .withLiteral("(", false) .withComponent("ReferenceType", false) .withLiteral(")", false) .withComponent("UnaryExpressionNotPlusMinus", false) ;
g.createComposition("MultiplicativeExpression") .withComponent("UnaryExpression", false) .withComponent("MultiplicativeExpressionRest", true) ;
g.createInterface("MultiplicativeExpressionRest") .withComponent("TimesMultiplicationExpression") .withComponent("DivMultiplicationExpression") .withComponent("PercentMultiplicationExpression") ;
g.createComposition("TimesMultiplicationExpression") .withLiteral("*", false) .withComponent("MultiplicativeExpression", false) ;
g.createComposition("DivMultiplicationExpression") .withLiteral("/", false) .withComponent("MultiplicativeExpression", false) ;
g.createComposition("PercentMultiplicationExpression") .withLiteral("%", false) .withComponent("MultiplicativeExpression", false) ;
g.createComposition("AdditiveExpression") .withComponent("MultiplicativeExpression", false) .withComponent("AdditiveExpressionRest", true) ;
g.createComposition("AdditiveExpressionRest") .withComponent("PlusAdditiveExpression", false) .withComponent("MinusAdditiveExpression", false) ;
g.createComposition("PlusAdditiveExpression") .withLiteral("+", false) .withComponent("AdditiveExpression", false) ;
g.createComposition("MinusAdditiveExpression") .withLiteral("-", false) .withComponent("AdditiveExpression", false) ;
g.createComposition("ShiftExpression") .withComponent("AdditiveExpression", false) .withComponent("ShiftExpressionRest", true) ;
g.createInterface("ShiftExpressionRest") .withComponent("LeftShiftExpression") .withComponent("RightShiftExpression") .withComponent("IrightShiftExpression") ;
g.createComposition("LeftShiftExpression") .withLiteral("<<", false) .withComponent("ShiftExpression", false) ;
g.createComposition("RightShiftExpression") .withLiteral(">>", false) .withComponent("ShiftExpression", false) ;
g.createComposition("IrightShiftExpression") .withLiteral(">>>", false) .withComponent("ShiftExpression", false) ;
g.createComposition("RelationalExpression") .withComponent("ShiftExpression", false) .withComponent("RelationalExpressionRest", true) ;
g.createInterface("RelationalExpressionRest") .withComponent("LTRelationExpression") .withComponent("GTRelationExpression") .withComponent("LTERelationExpression") .withComponent("GTERelationExpression") .withComponent("InstanceOfRelationExpression") ;
g.createComposition("LTRelationExpression") .withLiteral("<", false) .withComponent("RelationalExpression", false) ;
g.createComposition("GTRelationExpression") .withLiteral(">", false) .withComponent("RelationalExpression", false) ;
g.createComposition("LTERelationExpression") .withLiteral("<=", false) .withComponent("RelationalExpression", false) ;
g.createComposition("GTERelationExpression") .withLiteral(">=", false) .withComponent("RelationalExpression", false) ;
g.createComposition("InstanceOfRelationExpression") .withLiteral("instanceof", false) .withComponent("ReferenceType", false) ;
g.createComposition("EqualityExpression") .withComponent("RelationalExpression", false) .withComponent("EqualityExpressionRest", true) ;
g.createInterface("EqualityExpressionRest") .withComponent("EqualEqualEqualityExpression") .withComponent("NotEqualEqualityExpression") ;
g.createComposition("EqualEqualEqualityExpression") .withLiteral("==", false) .withComponent("EqualityExpression", false) ;
g.createComposition("NotEqualEqualityExpression") .withLiteral("!=", false) .withComponent("EqualityExpression", false) ;
g.createList("AndExpression", "&","","","EqualityExpression" );
g.createList("ExclusiveOrExpression", "^","","","AndExpression" );
g.createList("InclusiveOrExpression", "|","","","ExclusiveOrExpression" );
g.createList("ConditionalAndExpression", "&&","","","InclusiveOrExpression" );
g.createList("ConditionalOrExpression", "||","","","ConditionalAndExpression" );
g.createInterface("ConditionalExpression") .withComponent("ConditionalOrExpression") .withComponent("QuestionMarkConditionalExpression") ;
g.createComposition("QuestionMarkConditionalExpression") .withComponent("ConditionalOrExpression", false) .withLiteral("?", false) .withComponent("Expression", false) .withLiteral(":", false) .withComponent("ConditionalExpression", false) ;
g.createInterface("AssignmentExpression") .withComponent("ConditionalExpression") .withComponent("Assignment") ;
g.createComposition("Assignment") .withComponent("LeftHandSide", false) .withComponent("AssignmentOperator", false) .withComponent("AssignmentExpression", false) ;
g.createInterface("LeftHandSide") .withComponent("ExpressionName") .withComponent("FieldAccess") .withComponent("ArrayAccess") ;
g.createEnum("AssignmentOperator") .withLiteral("=") .withLiteral("*=") .withLiteral("/=") .withLiteral("%=") .withLiteral("+=") .withLiteral("-=") .withLiteral("<<=") .withLiteral(">>=") .withLiteral(">>>=") .withLiteral("&=") .withLiteral("^=") .withLiteral("|=") ;
g.createInterface("Expression") .withComponent("AssignmentExpression") ;
g.createInterface("ConstantExpression") .withComponent("Expression") ;

	return g;
	}
	}
	
